Skip to content

chore(release): 0.90.0 - #669

Merged
padak merged 2 commits into
mainfrom
release/0.90.0
Aug 23, 2026
Merged

chore(release): 0.90.0#669
padak merged 2 commits into
mainfrom
release/0.90.0

Conversation

@padak

@padak padak commented Aug 23, 2026

Copy link
Copy Markdown
Member

Release PR for 0.90.0. Its only job is the version bump, the changelog entry, the vNEXT resolution and the What's new reel -- no behavior changes of its own.

Scope: every PR merged since v0.89.0

The 0.89.0 tag was cut at 2026-08-23 09:43 UTC; all ten of these landed after it.

PR Title
#658 feat(ui): 0.89.0 catch-up — jobs/config actions, trash & restore, tokens, palette
#662 fix(job): render Config column in job list from the Queue API's config field
#661 ci: gate web/frontend PRs on tsc --noEmit + vite build
#663 feat(serve,ui): what's-new popup with --no-banner opt-out
#665 feat(ui): shareable deep links, rendered detail views, component-detail 502 fix
#666 fix(component): omitted --project resolves to first configured project
#664 feat(ui): fold storage buckets and tables into the Cmd+K palette
#668 fix(serve,ui): keep the UI session alive across server restarts
#667 docs(config-new): correct 'Zero API calls' claim for scaffold mode
#623 fix(build): stop duplicate _ui_dist wheel entry (hatchling >= 1.30)

Each has its own bullet in the changelog entry (13 bullets; #658 and #665 carry two each because they shipped separable things).

The one contract change worth calling out

ErrorCode.NOT_FOUND now answers HTTP 404 on every kbagent serve route (was 502, from #665). Any consumer branching on the status code alone needs updating. It is filed under Change: rather than BREAKING: because the documented contract has always been error.code, and that field is unchanged -- say the word if you want it reclassified.

Checklist (CONTRIBUTING > "Releasing a new version")

  • 2. pyproject.toml -> 0.90.0
  • 3. changelog.py: one entry, 13 bullets, every PR above referenced, each first sentence self-contained (test_newest_release_notes_are_not_truncated caught two over-long headlines; both rewritten)
  • 4. vNEXT resolved. The release-checklist grep is intentionally NOT empty -- four hits survive and all four are prose about the placeholder mechanism, not version gates: CLAUDE.md:170,177,271 and docs/web-server.md:351. Every actual (since vNEXT) / vNEXT+ behavior gate is now 0.90.0.
  • 5. make version-sync -> plugin.json, marketplace.json, uv.lock
  • 6. make skill-gen -- no diff (no command signatures changed this release)
  • 7. keboola-expert.md reviewed -- see below
  • 8. gotchas.md reviewed -- the two vNEXT entries feat(ui): shareable deep links, rendered detail views, component-detail 502 fix #665/fix(component): omitted --project resolves to first configured project #666 left are now tagged 0.90.0; nothing else this release needs a new entry
  • 9./10. CLAUDE.md command list + commands-reference.md -- no new commands or flags beyond serve --no-banner, which feat(serve,ui): what's-new popup with --no-banner opt-out #663 already documented in both
  • 11. make check clean: 6029 passed, 12 skipped
  • 12. make test-e2e -- not run here (needs E2E_API_TOKEN / E2E_URL). No CLI command signature changed this release, so the e2e surface is unchanged; run it if you'd rather not take that on faith.

Plugin / doc files touched (no CI coverage -- please eyeball)

  • plugins/kbagent/.claude-plugin/plugin.json -- version (auto)
  • .claude-plugin/marketplace.json -- version (auto)
  • plugins/kbagent/skills/kbagent/references/gotchas.md -- vNEXT -> 0.90.0 (5 occurrences, 2 entries)
  • plugins/kbagent/skills/kbagent/references/commands-reference.md -- vNEXT -> 0.90.0 (3 lines)
  • plugins/kbagent/agents/keboola-expert.md -- one new inline gotcha (§3): component detail's Storage-catalog fallback always reports examples_count: 0, which reads as "this component ships no examples" when it actually means "this source carries none". Before feat(ui): shareable deep links, rendered detail views, component-detail 502 fix #665 the same call errored, so the wrong conclusion is new. 50 988 B of the 70 000 B budget.
  • CLAUDE.md -- vNEXT -> 0.90.0 on the two behavior gates (lines 721, 968)
  • docs/web-server.md -- vNEXT -> 0.90.0 on four behavior gates
  • src/keboola_agent_cli/commands/context.py -- vNEXT -> 0.90.0 (2)
  • web/frontend/src/whatsnew.ts -- new curated reel for 0.90.0, 7 items led by deep links and the storage-aware palette. Required by feat(serve,ui): what's-new popup with --no-banner opt-out #663's contract: without it whatsNewFor falls back to the 0.89.0 entry, whose seen-marker most users have already set, so the release would ship its UI work dark.

Verification

  • make check -- 6029 passed, 12 skipped. Clean lint/format/typecheck/skill/version/version-gate/command-sync/changelog/error-codes/sentinel-guards/loc.
  • Frontend gate (frontend.yml, new in ci: gate web/frontend PRs on tsc --noEmit + vite build #661) run locally in web/frontend: tsc --noEmit clean, vitest run 53 passed (3 files), vite build OK.
  • kbagent changelog --limit 2 renders the 0.90.0 headline correctly.
  • The ty unresolved-import warning on scripts/hatch_build.py:66 (hatchling not a dev dep) is pre-existing -- verified identical on main at this base; make typecheck exits 0.

After merge

Tag the resulting main commit and publish -- the pipeline renders the release notes from the changelog entry via scripts/gen_release_notes.py.


Open in Devin Review

Bumps pyproject.toml to 0.90.0 and adds the changelog entry covering every
PR merged since v0.89.0 (#658, #662, #661, #663, #665, #666, #664, #668,
#667, #623), resolves the vNEXT placeholders those PRs left behind, and
adds the curated What's new reel for the release.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread docs/web-server.md Outdated
The '### What's-new popup *(since vNEXT)*' heading put the version gate in
the heading itself, so resolving the placeholder to 0.90.0 changed the
generated slug to 'whats-new-popup-since-0900' and broke the in-page link
at line 138 -- and would have broken it again on every future release.

Moved the '(since 0.90.0)' tag to the first body line: the anchor is now
the stable 'whats-new-popup', the gate stays visible, and
check_version_gates.py still sees it (it scans the whole file, not just
headings).
@padak
padak merged commit 320ac07 into main Aug 23, 2026
5 checks passed
@padak
padak deleted the release/0.90.0 branch August 23, 2026 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant